<HTML>
<HEAD>
  <!-- Created with AOLpress/2.0 -->
  <!-- AP: Created on: 3-May-2001 -->
  <!-- AP: Last modified: 13-Oct-2004 -->
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<!--<TITLE>Hinting</TITLE>-->
    <TITLE>ヒントづけ</TITLE>
  <LINK REL="icon" href="../../_static/fftype16.png">
  <LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
</HEAD>
<BODY>
<DIV id="in">
<H1 ALIGN=Center>
<!--Hinting-->
    ヒントづけ
</H1>
<P>
<!--
Postscript originally required that hints should not overlap. Now it requires
that any active set of hints be non-overlapping, but it allows you to change
sets as you move through the glyph. -->
PostScript では元来、ヒント同士が重なり合わない必要がありました。現在では、有効なヒントのセットには常に重なり合うものが無い必要がありますが、グリフ内を移動しながらセットを変更することができます。
<P>
<!--
So to implement hinting with hint substitution FontForge needs to know not
only the position and width of the stem being hinted, but also where the
stem should be active. And it needs to know what stems overlap which other
stems. -->
そのため、ヒント置換を伴うヒントづけ処理を実装するためには、FontForge はヒントづけを行なうステムの位置と幅を知るだけでなく、どこで有効化するかを知る必要があります。また、どのステムが他のステムと重なり合うかも知る必要があります。
<P>
<IMG src="../../_images/Hints.png" WIDTH="406" HEIGHT="399" ALIGN="Left"> <!--The horizontal
stems are drawn in light green. The vertical stems are drawn in light blue.
The areas where the stems are active are filled in as rectangles, outside
of that area the stems' outlines are drawn with dotted lines. Most of these
stems do not conflict with any other stems, but two, the bottom two horizontal
stems conflict with each other. All the non-overlapping stem hints may be
active at the same time, but only one of the two conflicting stem hints may
be active. As FontForge outputs the glyph it decides at each point what stems
need to be active, and activates them. -->
水平ステムは明るい緑で表示されています。垂直ステムは明るい青で表示されています。ステムが有効化されている領域は長方形として塗りつぶされ、その領域の外側では、ステムのアウトラインは点線で描かれています。これらのステムのほとんどは他のステムと衝突しませんが、2 つだけ、いちばん下の 2 個の水平ステムは互いに衝突し合っています。他と重なり合わないステムヒントはすべて同時に有効化することができますが、2 個の衝突ステムヒントのうち、有効化できるのは片方だけです。FontForge がグリフを出力するときには、各点でどのステムが有効化する必要があるかを判断して、必要なものを有効化します。
<P>
<!--
Postscript now allows FontForge to control relative counter sizes. Counters
are the spaces between adjacent stems. In the example at left there are two
counters of equal sizes between the horizontal stems on the left, and three
counters of equal sizes on the right. These form two independent counter
groups, and FontForge's Hints-&gt;Auto Counter command will generate a counter
description for each of them. You may also control the counters directly
by using the Counters pane of the Element-&gt;Char Info dialog. -->
現在の PostScript の仕様により、FontForge は相対カウンタサイズを制御することができます。カウンタとは、隣接するステムの間の空間のことです。左の例では、偏を構成する水平ステムの間に、サイズの等しい 2 個のカウンタが存在し、旁の側には 3 個の均等なステムが存在します。これらは 2 個の独立したカウンタグループを構成しており、FontForge の <CODE>ヒント(<U>I</U>)</CODE>→<CODE>自動カウンタヒント(<U>C</U>)</CODE> コマンドを実行するとそのそれぞれに対するカウンタ記述が生成されます。カウンタの大きさは、<CODE>エレメント(<U>L</U>)</CODE>→<CODE>グリフ情報(<U>I</U>)...</CODE> ダイアログの <CODE>[カウンタ]</CODE> ペインで直接指定することもできます。
<P>
<!--
Counters spaces appear between vertical stems too, and in this case FontForge
would output one counter group for the vertical stems. -->
カウンタ空間は垂直ステム間にも現れていて、この場合は FontForge は垂直ステムに対する 1 個のカウンタグループを出力します。
<H2 Clear=All>
<!--Serifs-->
    セリフ
</H2>
<P>
<IMG src="../../_images/serif.png" WIDTH="248" HEIGHT="227" ALIGN="Right"><!--One of the major
advantages of hint substitution is that it allows certain standard serif
situations to be described. In the example at right, the serif one the left
is smaller than the stem a bit further right. -->
ヒント置換の大きな利点の一つは、いくつかの標準的なセリフの状態を記述することができることです。右の例では、左側に突き出たセリフは右側のセリフよりもわずかに薄くなっています。
<P>
<IMG src="../../_images/serif2.png" WIDTH="158" HEIGHT="110" ALIGN="Left"><!--But it doesn't
solve all problems (or I don't know how to use it to do so). Consider the
serif on the right. Hint substitution would allow us to define a hint for
the main vertical stem and for the short vertical stem that corresponds to
the serif. But the problem that needs to be solved is making the distance
between the left edge of the serif and the left edge of the stem be the same
as the distance between the right edge of the stem and the right edge of
the serif. But doing so would require overlapping hints, active at the same
time. <SMALL>I think</SMALL> -->
そうは言っても、すべての問題が解決できるわけではありません (それとも、この機能のすべての応用法を私が知らないだけかもしれません)。右側のセリフを考えてみましょう。ヒント置換を使えば、中央の垂直ステムおよびセリフに相当する短い垂直ステムに対するヒントを定義することができるでしょう。ところが、解決しなければならない問題は、セリフの左端とステムの左端の間隔を、セリフの右端とステムの右端の間隔と等しくすることです。しかしこれを行なうには、同時に活性化された重なり合うヒントが必要です。<SMALL>私の考えでは。</SMALL>
<H2>
<!--Automatic Hinting-->
    自動ヒントづけ
</H2>
<P>
<!--
FontForge's AutoHint command can be used to figure out horizontal and vertical
stem hints. It will also find hint substitution points (if any are needed),
and will check for the simple counter description allowed by OpenType for
non-Asian fonts (the equivalent of h/vstem3 hints in type1 fonts). -->
FontForge の <CODE>自動ヒント(<U>H</U>)</CODE> コマンドを使うと、水平ステムヒントおよび垂直ステムヒントを算出することができます。また、ヒント置換を行なう点も (必要な場合) 発見され、アジア以外の OpenType フォントで使用可能な、単純なカウンタ記述 (これは Type1 フォントの h/vstem3 ヒントと等価です) のチェックが行なわれます。
<P>
<!--
Whenever you change a glyph FontForge keeps track of that fact that the hints
are out of date (when you autohint a glyph, or make a manual change to the
hints FontForge resets this flag). If you generate a postscript font from
something that contains glyphs with out of date hints, then FontForge will
automagically regenerate them. -->
グリフの変更を行なったときは常に、そのヒントが古くなったことが FontForge に記録されています (グリフの自動ヒントづけを行なった時、またはヒントを手で編集した時に FontForge はこのフラグを戻します)。古いヒントがついたグリフを含むデータから PostScript フォントを出力すると、FontForge は自動的にヒントを生成し直します。
<P>
<!--
This may not always be appropriate. You can turn this off in general with
the HintForGen preference item. You may turn it off for an individual glyph
with the Hints-&gt;Don't AutoHint command. -->
この動作が余計なお世話である場合もあるでしょう。環境設定項目 HintForGen を設定すると、フォント全体でこれをオフにすることができます。<CODE>ヒント(<U>I</U>)</CODE>→<CODE>自動ヒントを停止(<U>D</U>)</CODE> コマンドで個別のグリフに対してオフにすることができます。
<H2>
<!--Manual Hinting -->
    手動ヒントづけ
</H2>
<P>
<!--
I hope that the FontForge's autohint command will be good enough that manual
efforts will not be needed. But hopes like this are rarely fulfilled. -->
私は、FontForge の自動ヒントコマンドが手動調整を必要としないほど優秀であることを願っています。しかしこの手の願いは滅多に叶えられないものです。
<P>
<!--
The AutoHint command should find all stems in a glyph. Some of them it deems
to be useless and will remove them. If you find that FontForge is removing
a hint that you think is important then invoke Hint-&gt;AutoHint with the
shift key held down, this will tell FontForge not to prune any of the stems.
You may then use Review Hints to prune things yourself. -->
<CODE>自動ヒント(<U>H</U>)</CODE> コマンドはグリフ内のすべてのステムを抽出します。そのうちの一部が不要であると判断されれば削除されます。あなたが重要だと考えるヒントを FontForge が削除しているのに気づいたときは、Shift キーを押したまま <CODE>ヒント(<U>I</U>)</CODE>→<CODE>自動ヒント(<U>H</U>)</CODE> を呼び出すと、FontForge にステムの削除を一切行わないように通知したこと名になります。その後、手動でヒントを削除するには <CODE>ヒントを確認(<U>R</U>)...</CODE> を使用してください。
<P>
<!--
If you find that you must create your own hints, FontForge will only allow
you to specify the position and width of the hint, it will then go off and
try to guess the extents where the hint should be active. -->
自分でヒントを作成する必要があるときに、操作可能なのはヒントの位置と幅だけです。それらを指定すると、FontForge はヒントが有効化されるべき範囲の推測を自動で行ないます。
<P>
<!--
You may manually: -->
手動で行なうことができるのは以下の操作です:
<UL>
  <LI>
<!--Clear all horizontal stem hints-->
    すべての水平ステムヒントを削除する
  <LI>
<!--Clear all vertical stem hints-->
    すべての垂直ステムヒントを削除する
  <LI>
<!--Select two points and create a vertical stem hint that whose width is horizontal
    distance between the two points -->
    2 個の点を選択し、それらの間の水平方向の距離と等しい幅をもつ垂直ステムヒントを作成する
  <LI>
<!--Select two points and create a horizontal stem hint whose width is the vertical
    distance between the two points -->
    2 個の点を選択し、それらの間の垂直方向の距離と等しい幅をもつ水平ステムヒントを作成する
  <LI>
<!--Create a horizontal hint starting at an arbitrary y location with an arbitrary
    vertical width. -->
    任意の y 座標から始まり、任意の幅をもつ水平ヒントを作成する
  <LI>
<!--Create a vertical hint starting at an arbitrary x location with an arbitrary
    horizontal width. -->
    任意の x 座標から始まり、任意の幅をもつ垂直ヒントを作成する
  <LI>
<!--Review all your hints, manually changing or removing any (or all).-->
    すべてのヒントを表示し、どれか (または全部) を手動で変更または削除する。
</UL>
<P>
<!--
Once you have made a manual change to a glyph's hints with any of the above
commands, that glyph will be marked "Don't AutoHint" until you explicitly
call the AutoHint command on it. You may also explicitly use the
Hints-&gt;Don't AutoHint command to turn off FontForge's automatic hinting
attempts. -->
グリフのヒントに手動で変更を加えれば、グリフは「自動ヒントを停止」と印づけされ、その文字に明示的に <CODE>自動ヒント(<U>H</U>)</CODE> コマンドを呼ばない限り
<P>
<!--
You may also manually -->
手動で以下の操作を行なうことも可能です:
<UL>
  <LI>
<!--Set hint change-over points-->
    ヒントを切り替える点の設定
  <LI>
<!--Set counter groups for a glyph-->
    グリフに対するカウンタグループの設定
</UL>
<P>
<!--
These do not set the "Don't AutoHint" bit.-->
これらは「自動ヒントを停止」ビットを設定しません。
<H3>
<!--Manual Hint Substitution Points-->
    手動によるヒント置換点の指定
</H3>
<P>
<!--
FontForge's Hints-&gt;Hint Substitution Pts command will automatically figure
out where hint substitution should occur, but if this isn't good enough you
may do it manually with the <A HREF="getinfo.html#HintMask">Element-&gt;Get
Info</A> command (when the selection is a single point to which you want
to attach a hintmask). -->
FontForge の <CODE>ヒント(<U>I</U>)</CODE>→<CODE>ヒントが置換する点(<U>S</U>)</CODE> コマンドは、ヒント置換が起こる点を自動的に検出しますが、これが十分うまく働いていないときは、(ヒントマスクに所属させたい点 1 個だけをあらかじめ選択してあれば) <A HREF="getinfo.html#HintMask"><CODE>エレメント(<U>L</U>)<CODE>→<CODE>情報を得る(<U>I</U>)</CODE></A> コマンドから手動で設定を行うことができます。
<P>
<!--
If a glyph has conflicting hints then the first point in the glyph (the first
point on the first contour) MUST have a hintmask attached to it. If it does
not, the FontForge will automatically figure substitution points when it
generates the font. Other points are not required (but may) have a hintmask.-->
1 個のグリフ内にお互いに衝突するヒントが含まれている場合、グリフの最初の点 (最初の輪郭の最初の点) には、その点が所属するヒントマスクが存在しなければなりません。そうなっていない場合、FontForge はフォントを出力する時に、置換する点を自動検出します。他の点はヒントマスクに所属している必要はありません (してもかまいません)。
<P>
<!--
The hintmask specifies what hints should be active when that point is positioned,
and will control all subsequent points until a new hintmask is established.
So in the
following<IMG src="../../_images/charwithhintmask.png" WIDTH="309" HEIGHT="322" ALIGN="Left"><IMG
    src="../../_images/hintmaskinfo.png" WIDTH="321" HEIGHT="459" ALIGN="Right"> example, the
selected point (on left) has the highlit hints active at it, In the glyph
view the currently active stems are drawn much darker than the inactive ones.
Points with hintmasks attached to them have circles drawn around them. -->
ヒントマスクは、その点の位置を設定するときに、どのヒントが有効化されているべきかを指定し、それ以降・新しいヒントマスクが設定されるまでのすべての点を制御します。
例えば、以下の<IMG src="../../_images/charwithhintmask.png" WIDTH="309" HEIGHT="322" ALIGN="Left"><IMG src="../../_images/hintmaskinfo.png" WIDTH="321" HEIGHT="459" ALIGN="Right"> 例では、(左の) 選択された点は、そこで有効になっている点がハイライト表示されています。グリフビューでは現在有効なステムは無効になっているステムに比べて歴然と暗い色で表示されています。
所属するヒントマスクがある点は、丸で囲って表示されています。
<P>
<!--
Remember to hold the control key down when making disjoint
selections.<BR CLEAR=ALL> -->
連続していない点を選択するときに、Control キーを押すのをお忘れなく。<BR CLEAR=ALL>
<H3>
<!--Manual <A NAME="Counter">Counter</A> Groups-->
    手動による<A NAME="Counter">カウンター</A>のグループ化
</H3>
<P>
<!--
FontForge also has a Hints-&gt;Auto Counter command which tries to figure
out what stems form a counter group. -->
FontForge には、カウンタグループを構成するステムを検出するための <CODE>ヒント(<U>I</U>)</CODE>→<CODE>自動カウンタヒント(<U>C</U>)</CODE> コマンドも用意されています。
<P>
<!--
Again you can do this manually, with the
<A HREF="charinfo.html#CounterMasks">Counter</A> pane of the Element-&gt;Char
Info dialog. When creating a new counter group you are presented with a dialog
very similar to the one above in which you must select a set of hints that
bound a set of counters. -->
この場合も、<CODE>エレメント(<U>L</U>)</CODE>→<CODE>グリフ情報(<U>I</U>)</CODE> の <A HREF="charinfo.html#CounterMasks"><CODE>[カウンタ]</CODE></A> タブを使用して、手動で設定を行うことができます。新しいカウンタグループの作成をするときには、上の例と非常によく似たダイアログが提示され、そこでは輪郭の組合せと結びつけられる一連のヒントを選択する必要があります。
<H2>
<!--Hints and previously existing fonts.-->
    ヒントと以前存在したフォント
</H2>
<P>
<!--
FontForge will not be able to convert TrueType instructions into PostScript
hints when it reads a TrueType font (the format is too complex, there are
too many possibilities, instead FontForge stores all the truetype instructions
and writes them back out uninterpretted). -->
FontForge は TrueType フォントの読み込み時には、 TrueType の命令を PostScript ヒントに変換しません (そのフォーマットは複雑すぎてあまりに多数の可能性が考えられるからです。その代わりに、FontForge はすべての TrueType 命令を保存して、解釈せずにそのまま書き戻します)。
<P>
<!--
From a Type1 font it will happily read all the hints in a glyph, and keep
track of hint substitution points. It will not read counter hints though. -->
Type1 フォントからは、グリフに存在するすべてのヒントを問題なく読み込み、ヒントが置換する点を記録しています。ただし、カウンタヒントは読み込みません。
<P>
<!--
In an OpenType (Type2) font FontForge will read in all the hints, keep track
of hint substitution points and the counter hints. -->
OpenType (Type2) フォントからは、FontForge はすべてのヒントを読み込み、ヒント置換点とカウンタヒントを記録しています。
<H2>
<!--Hinting and TrueType-->
    ヒントづけと TrueType
</H2>
<P>
<!--
FontForge does a really bad job of "hinting" (actually generating instructions
for) truetype. Generally you will get better results with unhinted glyphs
than with glyphs autoinstructed by fontforge. -->
FontForge が TrueType フォントに対して行う「ヒントづけ」 (実際に命令を生成します) はまったくひどい物です。一般的に、ヒントづけしないグリフの方が FontForge によって自動ヒントづけされたグリフよりもよい結果が得られるでしょう。
<P>
<!--
Hinting TrueType fonts opens a far wider range of possibilities. I have added
several types of hints that are specific to truetype (and will be ignored
by the postscript generation routines). These by no means exhaust the
capabilities of TrueType. -->
TrueType フォントのヒントづけには、ずっと広い範囲の可能性が開けています。私は TrueType に固有ないくつかのタイプのヒントを追加しました (これらは PostScript 出力ルーチンでは無視されます)。これらは、TrueType の可能性を利用しきっているとはとても言えません。
<UL>
  <LI>
<!--Diagonal Stem Hints<BR>
    These look similar to the horizontal and vertical stem hints that postscript
    understands but they allow you to constrain the width of diagonal stems as
    well.-->
    斜行ステムヒント<BR>
    これらは PostScript が理解する水平および垂直ステムヒントと似ていますが、これは同様の方法で斜めのステムの幅を制限することができます。
  <LI>
<!--Minimum Distance Hints<BR>
    TrueType allows you to say that the distance between two features should
    never vanish. Every stem hint will automatically have one of these across
    it, but there may be other places where they will be useful. In particular
    you can insure that there is always white space after a glyph by putting
    a minimum distance hint between a point on the right edge of that glyph and
    the width line, also these hints can be used to solve the serif problems
    mentioned above.-->
    最小距離ヒント<BR>
    TrueType では、2 個の特徴の間の距離が決してゼロにならないように設定することができます。各ステムヒントの間には自動的にこれが設定されますが、他の場所でもこれを設定すると役に立つことがあります。とくに、グリフの右端と横幅の線の間に最小距離ヒントを設定することにより、グリフの後に必ず空白が入るように設定することができます。また、このヒントは、先ほど言及したセリフの問題を解決することもできます。
  <LI>
<!--Round to Grid<BR>
    TrueType can move points to the rasterization grid before rasterizing glyphs.
    Stem hints and minimum distance hints will automagically be rounded, but
    there might be other cases where rounding is useful. -->
    グリッドへの丸め<BR>
    TrueType では、グリフをラスタライズする前に、ラスタライズ時のグリッドに点を移動することができます。ステムヒントと最小距離ヒントは自動的に丸めが行われますが、丸め処理が役立つ場合は他にも存在します。
</UL>
<H2>
<!--Examples of Minimum Distance Hinting-->
    最小距離ヒントの例
</H2>
<P>
<TABLE BORDER CELLPADDING="2">
  <TR>
    <TD><IMG src="../../_images/Ehinted.png" WIDTH="189" HEIGHT="208"></TD>
    <TD><IMG src="../../_images/EhintedTtf.png" WIDTH="127" HEIGHT="145"><BR>
<!--  <SMALL>A fully hinted glyph is<BR>
      completely grid fit, but<BR>
      the difference between<BR>
      stem lengths is lost.</SMALL></TD> -->
      <SMALL>
      完全にヒントづけられたグリフは<BR>
      完全にグリッド合わせが行われて<BR>
      いますが、ステム間の距離の差は<BR>
      失われてしまいます。</SMALL></TD>
  </TR>
  <TR>
    <TD><IMG src="../../_images/Efore.png" WIDTH="188" HEIGHT="208"></TD>
    <TD><IMG src="../../_images/EforeTtf.png" WIDTH="127" HEIGHT="145"><SMALL><BR>
<!--  One attempt to solve the<BR>
      above problem, compare<BR>
      to below.</SMALL></TD> -->
      <SMALL>上の問題を解決する<BR>
      試みの一つです。下と比べて<BR>
      みてください。</SMALL></TD>
  </TR>
  <TR>
    <TD><IMG src="../../_images/Eback.png" WIDTH="189" HEIGHT="208"></TD>
    <TD><IMG src="../../_images/EbackTtf.png" WIDTH="127" HEIGHT="145"><SMALL><BR>
<!--  Note how the different<BR>
      directions in the md hint<BR>
      change the rasterization</SMALL></TD>-->
      <SMALL>最小距離ヒント内の異なる命令が<BR>
      どのようにラスタライズ結果に<BR>
      影響するかにご注意ください。</SMALL></TD>
  </TR>
</TABLE>
<H2>
<!--Hint questions:-->
    ヒントに関する疑問点:
</H2>
<P>
<!--
I find the hint documentation inadequate for me to do a good job at hinting. -->
ヒントづけを上手に行なうためには、ヒントに関する文書は不適切であることに気づきました。
<UL>
  <LI>
<!--Section 2.4 of
    <A HREF="http://partners.adobe.com/asn/developer/pdfs/tn/5015.Type1_Supp.pdf">T1_Supp.pdf
    </A>says that vertical counters are offset from the lbearing, but the example
    2.6 shows them being offset from 0. -->
    <A HREF="http://partners.adobe.com/asn/developer/pdfs/tn/5015.Type1_Supp.pdf">T1_Supp.pdf</A> のセクション 2.4 では、垂直カウンタは左サイドベアリングからのオフセットであると言っていますが、例 2.6 ではそれらのオフセットは 0 からであると図示しています。
  <LI>
<!--In
    <A HREF="http://partners.adobe.com/asn/developer/pdfs/tn/5177.Type2.pdf">Type2</A>
    is it ok to use Counter mask if LanguageGroup is not 1 and the stems don't
    fit into a *stem3 pattern? Or can cntrmask only be used for *stem3 in latin
    letters? -->
    <A HREF="http://partners.adobe.com/asn/developer/pdfs/tn/5177.Type2.pdf">Type2</A> で、LanguageGroup が 1 でなく、ステムが *stem3 パターンに当てはまらないときにカウンタマスクを使ってもいいのか? それとも cntrmask はラテン文字では *stem3 にしか使えないのか?
  <LI>
    <IMG src="../../_images/NoPointHint.png" WIDTH="194" HEIGHT="232" ALIGN="Right"><!--How do
    hints work? Is a hint meaningful if there are no points associated with it?
    As in the "O" at right, where the two vertical stems have no points associated
    with them. -->
    ヒントはどのように動作するのか? ヒントに付随する点が存在しないとき、そのヒントは有効なのか? (右の例の“O”のように、2 本の垂直ヒントがそれに伴う点をもたない場合)。
  <LI>
<!--Is it meaningful for a hint to have points only on one side of it? Can reasonable
    hints be written for the serif cap above left? -->
    ヒントの片方の端にしか点が存在しない場合はそれは有効なのか? 左上のセリフの頂点に対して、妥当なヒントを出力することが可能か?
</UL>
<P>
<!--
<A HREF="overview.html#Hints">Overview of Hinting in Postscript and
TrueType</A>.<BR>
<A HREF="hintsmenu.html">Hinting menu.</A> -->
<A HREF="overview.html#Hints">Postscript と TrueType でのヒント処理の概要</A>.<BR>
<A HREF="hintsmenu.html"><CODE>ヒント(<U>I</U>)</CODE>メニュー</A>
</DIV>
</BODY></HTML>
